package be.vdab.servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import be.vdab.entities.Klant;
import be.vdab.entities.Reservatie;
import be.vdab.entities.Voorstelling;
import be.vdab.services.*;

/**
 * Servlet implementation class GereserveerdServlet
 */
@WebServlet("/gereserveerd.htm")
public class GereserveerdServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static final String VIEW = "/WEB-INF/JSP/gereserveerd.jsp";
	private final ReservatieService reservatieService = new ReservatieService();
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		Map<Voorstelling,Integer> gelukteReservaties = new HashMap<>();
		Collection<Voorstelling> mislukteReservaties = new ArrayList<>();
		Klant gebruiker = (Klant) request.getSession()
				.getAttribute("gebruiker");
		@SuppressWarnings("unchecked")
		Map<Voorstelling, Integer> mandje = (Map<Voorstelling, Integer>) request
				.getSession().getAttribute("mandje");
		Long klantNr = gebruiker.getKlantNr();
		for(Map.Entry<Voorstelling,Integer> entry: mandje.entrySet()){
			Reservatie reservatie = new Reservatie(klantNr,	entry.getKey().getVoorstellingsNr(), entry.getValue());
			boolean gewijzigd = reservatieService.create(reservatie);
			if(gewijzigd){
				gelukteReservaties.put(entry.getKey(),entry.getValue());
			}else{
				mislukteReservaties.add(entry.getKey());
			}
		}
		request.setAttribute("gelukteReservaties",gelukteReservaties);
		request.setAttribute("mislukteReservaties",mislukteReservaties);
		request.getRequestDispatcher(VIEW).forward(request, response);
		request.getSession().invalidate();
	}

}
